import {
  Entity,
  Column,
  PrimaryGeneratedColumn,
  OneToOne,
  JoinColumn,
  // ManyToMany,
  // ManyToOne,
  // OneToMany,
  // JoinTable,
} from 'typeorm';
import { UseDb } from './use-db.entity';

@Entity({
  name: 'id_card',
  comment: '身份证表',
})
export class IdCard {
  @PrimaryGeneratedColumn()
  id: number;

  @Column({
    type: 'varchar',
    name: 'cardName',
    length: 50,
    comment: '身份证号',
  })
  cardName: string;

  // 一对一关系 一个身份证对应一个用户
  // 在一对一关系中，@JoinColumn 应该在关系的拥有方声明，这里 IdCard 是关系的拥有方，
  // 所以在 IdCard 实体中声明 @JoinColumn，而在 User 实体中不需要声明。
  // 拥有方会在数据库表中添加外键列，这里外键列名为 user_id。
  // 级联操作：当删除或更新用户时，级联删除或更新该用户的身份证
  @JoinColumn({ name: 'user_id' })
  @OneToOne(() => UseDb, {
    // eager: true, // 预加载，即查询时一起查询用户和身份证
    // onDelete: 'CASCADE', // 级联删除，当用户删除时，级联删除该用户的身份证
    // onUpdate: 'CASCADE', // 级联更新，当用户更新时，级联更新该用户的身份证
    // cascade: true, // 级联操作，当操作该实体时，级联操作关联的实体
  })
  user: UseDb;
}
